int f( int ( *p )[8] )的形式参数什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:52:19
哪位朋友可以告诉我这里的(*p)[8]形式参数什么意思,我得放入什么的实参才合法?帮我改下下面的小代码,谢谢.
#include <iostream>

void f ( char (*p)[3] )
{

printf ( "%-3c", p ) ;

}
int main ( )
{
char a[2][3] = { 'A', 'B', 'C', 'D', 'E', 'F'} ;
char *p = a ;
f ( p ) ;
}

分类上升达人 冒险岛乐乐 的代码有问题的,问题在char *p = a ;这里发生了类型转换,编译器会给出警告(甚至错误)。下面是没有错误和警告的代码:

#include <iostream>
#include <cstdlib>
using namespace std;
void f ( char (*p)[3] )
{
int i;
for (i = 0; i < 3; i++)
printf ( "%c", (*p)[i]) ;
}
int main ( )
{
char a[2][3] = {{'A', 'B', 'C',}, {'D', 'E', 'F',},} ;
char (*p)[3] = &a[0] ; // a[0] or a[1]
f ( p ) ;
return 0;
}

甚至还可以这么写:

#include <iostream>
#include <cstdlib>
using namespace std;
void f ( char (*p[2])[3] ) // 2 被忽略
{
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++)
printf ( "%c", (*p[i])[j]) ;
printf("\n");
}
}
int main ( )
{
char a[2][3] = {{'A', 'B', 'C',}, {'D', 'E', 'F',},} ;